//
// Created by wxd on 2025/8/27.
//

#pragma once

#include <iostream>
#include <vector>
#include <glm/glm.hpp>
#include <glm/trigonometric.hpp>
#include "../wrapper/log/Logger.h"
#include "../wrapper/monitor/GLDebug.hpp"
#include "../global/ChineseOutput.hpp"
#include "../global/EngineDataProperties.h"
#include "../application/app/Application.h"
#include "../glFramework/shader/Shader.h"
#include "../glFramework/constant/engine_layout.h"
#include "../glFramework/texture/Texture.h"
#include "../glFramework/utils/ResourceLoadUtils.h"
#include "../glFramework/bo/VBO.h"
#include "../glFramework/bo/VAO.h"
#include "../glFramework/constant/engine_uniform.h"
#include <memory>

#include "bo/EBO.h"
#include "../global/output.hpp"
#include "../application/camera/PerspectiveCamera.h"
#include "../application/camera/control/TrackBallCameraControl.h"
#include "../application/camera/control/GameFPSCameraControl.h"

#include "../application/frame/FrameManager.h"

#include "../glFramework/geo/Cube.h"
#include "../glFramework/geo/Sphere.h"
#include "../glFramework/light/phong/PhongLightMode.h"
#include "../glFramework/light/phong/AmbientLight.h"
#include "../glFramework/light/phong/ParallelLight.h"

#include "../math/matrix/MatrixTransformUtils.hpp"

inline const char* texPath = "../demo/texture/earth.png";

// 测试全局id生成器
void TestGlobalTraceIdGenerator() {
    ChineseOutput::init();
    EngineApp.initWindowConfig(3, 3, GLFW_OPENGL_CORE_PROFILE,
        2560, 1800,  "FPS Camera Coontrol");
    EngineApp.init();

    Cube cube = Cube(1.f, glm::vec3(0.f, 0.f, -3.f));
    Sphere sphere = Sphere();

    Texture texture1(texPath);
    Texture texture2(texPath);
}
